//
//  NSString+MFMD5.m
//  24-加密
//
//  Created by mafeng on 16/8/16.
//  Copyright © 2016年 mafeng. All rights reserved.
//

#import "NSString+MFMD5.h"
// 导入系统库
#import <CommonCrypto/CommonCrypto.h>
@implementation NSString (MFMD5)

// 字符串 转换 32 位 MD5 字符串 小写
- (NSString *)stringWith32BitMD5Lower {
    
    return [[self stringWith32BitMD5] lowercaseString];
    
}

// 字符串 转换 32 位 MD5 字符串 大写
- (NSString *)stringWith32BitMD5Upper {
   
     return [[self stringWith32BitMD5] uppercaseString];
    
}

// 字符串 转换 32 位 MD5 字符串
- (NSString *)stringWith32BitMD5 {
    // 1. 将字符串转化为c语言字符串
    const char *cString = [self UTF8String];
    CC_LONG length = (CC_LONG)strlen(cString);
    unsigned char bytes[CC_MD5_DIGEST_LENGTH];
    // 2. 将c的字符串转化为 MD5
    CC_MD5(cString, length, bytes);
    // 3. 将c的字符串转换成oc的
    NSMutableString *finalString = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
    for (int i = 0; i < 16; i++) {
        // 两位, 前面不足位, 用0补齐
        [finalString appendFormat:@"%02x", bytes[i]];
    }
    return finalString;
}



- (NSString *)stringWith16BitMD5 {
    
    NSRange range = {8, 16};
    return [[self stringWith32BitMD5] substringWithRange:range];
    
}


// 字符串 转换 32 位 MD5 字符串 小写
- (NSString *)stringWith16BitMD5Lower {
    
    return [[self stringWith16BitMD5] lowercaseString];
}

// 字符串 转换 32 位 MD5 字符串 大写
- (NSString *)stringWith16BitMD5Upper {
    
    return [[self stringWith16BitMD5] uppercaseString];
    
}





@end
